﻿using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

namespace ProjetoGrupo2
{
    class RolagemCena
    {
        private Texture2D tela1, tela2;
        private Rectangle objetoImagem, objetoImagem2;
        private float velocidade;
        private float aceleracao;
        private float velocidadeMax;
        private int contador;
        private int contadorAntigo;
        
        //FUNÇÃO QUE DEFINE TODAS AS PROPRIEDADES DA ROLAGEM
        public RolagemCena(Texture2D tela1, Texture2D tela2, int x, int y)
        {
            this.tela1 = tela1;
            this.tela2 = tela2;
           

           // DEFINE O TAMANHO E A POSIÇÃO DA IMAGEM;
            this.objetoImagem = new Rectangle(x,y,tela1.Width, tela1.Height);
            this.objetoImagem2 = new Rectangle(x + tela1.Width, y, tela2.Width, tela2.Height);
            
               
       
            
            Inicialize();

        }


        public void Inicialize() // FUNÇÃO QUE INICIALIZAÇÃO DO JOGO
        {
            aceleracao = 0.005f; 
            velocidade = 3f;
            velocidadeMax = 20f;
            contador = 1;
            contadorAntigo = 0;
        }

        public void Update(GameTime gametime)// ATUALIZAÇÃO DO JOGO
        {


            //CRIAÇÃO DE MOVIMENTOS DAS TELAS E DOS FUNDOS DA TELA, QUE NO CASO SAO DUAS IMAGENS DE FUNDO E DUAS NA TELA DA FRENTE
            objetoImagem.X -= (int)velocidade;
            objetoImagem2.X -= (int)velocidade;
           
              if (objetoImagem.X < -objetoImagem.Width) // SE A POSIÇÃO X DA IMAGEM FOR MENOR DOQUE O LIMETE DA IMAGEM, OU SEJA A IMAGEM JA ESTIVER CHEGADO NO FIM
            {
                objetoImagem.X = objetoImagem2.X + objetoImagem2.Width ;  // A POSIÇÃO x DA PRIMEIRA IMAGEM RECEBE A POSIÇÃO X DA IMAGEM 2 + A LARGURA DA IMAGEM 2
                contadorAntigo = contador;// O CONTADOR ANTIGO RECEBERA OS VALORES DO CONTADOR, PARA NO CONTADOR TER ESPAÇO PARA UM NOVO VALOR NA PROXIMA ATUALIZAÇÃO;
                
            }

            //NESSE COMANDO ESTAMOS REVERTENDO O DE CIMA PARA FAZER UM LOOP, ESTA DIZENDO QUE CASO CHEGUE NO LIMITE DA IMAGEM 2 ELE VOLTE PARA IMAGEM 1;
              if (objetoImagem2.X < -objetoImagem2.Width)
            {
                objetoImagem2.X = objetoImagem.X + objetoImagem.Width ;
                
                
                  
            }

              if (velocidade < velocidadeMax)
              {
                  if (contadorAntigo == contador)
                  {

                      velocidade += aceleracao;

                      contador++;

                      Console.WriteLine(contadorAntigo + "  -  " + contador + "  - " + velocidade);
                  }
              }

           
        }

        public void Draw(SpriteBatch spriteBatch)// COMANDO DE DESNHO DE TELA
        {

            spriteBatch.Draw(tela1, objetoImagem, Color.White);
            spriteBatch.Draw(tela2, objetoImagem2, Color.White);

        }


    }
}
